Titre

-------------------------------------- Chapitre IV - dotNET ---------------------------------------

Analyse sous Ollydbg - 4/4

 

Rentrez dans le second call et tracez pas à pas tout en observant la zone de Dumps, jusqu'à la fin de cette sous-routine jusqu'ici. (Fig. 12)
En suivant le dump, vous vous apercevrez que tout au long de la routine, il ne fait que préparer la chaine à hasher :

- Nettoyage du Name (Retrait des espaces et autres caractères spéciaux, ainsi que des valeurs numériques)

=> Encore une fois, dans ce cas, avec Olly, il faut y aller de son intuition... il va être difficile (bien que possible, en rentrant dans chaque call, et avec un sacré blocnotes) de déterminer la plage de caractères autorisés exacte. Pour ma part, après avoir vu que d'un Papa Bango, il ne retenait que PapaBango, j'ai essayé avec un Name contenant d'autres caractères spéciaux que les espaces. Par exemple, si vous utilisez le name -=P4ap4a _ Bang0o=-, seul PapaBango sera retenu pour la concaténation. On peut en déduire que le Name ne doit contenir que des caractères compris en (a - z) et (A - Z). Mais si un développeur rusé avait décidé d'exclure également toutes les voyelles de la plage autorisée, avec Olly, il serait déjà plus difficle de le déterminer.

- Concaténation du Name avec le mail.

Si vous ne me croyez pas, et bien relisez le tuto de Todd ou tracez vous-même dans les méandres de CALLs, et vous pouvez me faire confiance... c'est fastidieux ;)!

Hashing

Fig.12

Regarder la zone dump à l'issue du CALL à l'adresse 04A614AC (chez moi, hein!), et que voit-on...un beau Hash. Encore une fois, à l'instar de la méthode Toddienne, on ne voit pas tout de suite qu'il s'agit d'un HASH SHA1, on peut cependant le soupçonner par tâtonnements. Tout d'abord, on s'aperçoit que c'est un Hash d'un longueur de 40 Bytes...comme le SHA-1 :) :

SHA1

Fig.13

Comme on a de l'intuition, on pourrait tout simplement tester de hasher notre chaine concaténée en SHA1 et la comparer, mais histoire d'avoir quelques certitudes, recherchons en mémoire les éventuels vecteurs de hashing. Par défaut, les 5 vecteurs d'initialisation du SHA1 sont :

=> ALT+M pour ouvrir la fenêtre Memory sous Olly, puis en HEX, cherchez une des constantes (maintenant, je prends la dernière, vu que les 4 autres sont similaires aux quatres vecteurs du MD5...).

TIP: Attention, en HEX on cherchera : F0 E1 D2 C3 ;) :

Vecteurs

Fig.14

Bingo! On reprend le tracing où on en était, et le CALL à l'adresse 04A614BC (toujours chez moi) récupère manifestement les 16 :)premiers caractères du Hash Obtenu.... et combien de caractères doit faire notre serial? je vous le donne en mille : 16d ! CQFD

Comme l'a précisé Todd, le programme se connecte pour comparer le Name et l'EMail entré, à une base de données de BlackList. C'est une condition non indispensable à la validation, donc vous devez couper le Net pour la vérification, le programme ne se reconnectera plus à la base. Mais tant que vous n'apparaissez pas comme blacklisté dans la base, la validation devrait se faire quand même :).

 

 

Precedent        Sommaire        Suivant